PUSH {r4-r7,lr} 不是保存r4,r5,r6,r7,lr寄存器吗?为什么最后是 POP {r4-r7,pc}而不是 POP {r4-r7,lr}?

来源:百度知道 编辑:UC知道 时间:2024/06/20 16:44:29
前面是 PUSH {r4-r7,lr}

为什么最后是 POP {r4-r7,pc}而不是 POP {r4-r7,lr} ?

PUSH {r4-r7,lr} 不是保存r4,r5,r6,r7,lr寄存器吗?

首先说明一下
pc:程序寄存器,保留下一条CPU即将执行的指令
lr: 连接返回寄存器,保留函数返回后,下一条应执行的指令
PUSH {r4-r7,lr} 的确如你所说保存r4,r5,r6,r7,lr 的值到内存的栈中,那么最后当执行完某操作后,你想返回到lr指向的地方执行,当然要给pc了,因为pc保留下一条CPU即将执行的指令,只有给了pc,下一条指令才会执行到lr指向的地方